import pandas as pd

'''
一、数据清洗、处理： (此步骤也可以在Excel中完成 再读入数据)
'''
datatmsp = pd.read_excel('../data/datatmsp1.xls')  # 读取爬取的数据

# 数据缺失值分析
# 安装模块：pip install missingno
import missingno as msno

# '''
# 模块缺失图
# '''
# msno.bar(datatmsp.sample(len(datatmsp)), figsize=(10, 4))

# 删除缺失值过半的列
half_count = len(datatmsp) / 2
datatmsp = datatmsp.dropna(thresh=half_count, axis=1)

# 删除重复行：
datatmsp = datatmsp.drop_duplicates()

'''
说明：根据需求，本项目中我只取了 item_loc, raw_title, view_price, view_sales 这4列数据，
主要对 标题、区域、价格、销量 进行分析，代码如下:
'''
# 取出这4列数据：
data = datatmsp[['item_loc', 'raw_title', 'view_price', 'view_sales']]
data.head()  # 默认查看前5行数据

# 对 item_loc 列的省份和城市 进行拆分 得出 province 和 city 两列

# 生成province列：
data['province'] = data.item_loc.apply(lambda x: x.split()[0])

# 注：因直辖市的省份和城市相同 这里根据字符长度进行判断：
data['city'] = data.item_loc.apply(lambda x: x.split()[0] if len(x) < 4 else x.split()[1])

# 提取 view_sales 列中的数字，得到 sales 列：
data['sales'] = data.view_sales.apply(lambda x: str(x.split('人')[0]).replace('+', ''))

# 将数据类型进行转换
data['sales'] = data.sales.astype('int')

list_col = ['province', 'city']
for i in list_col:
    data[i] = data[i].astype('category')

# 删除不用的列：
data = data.drop(['item_loc', 'view_sales'], axis=1)


data['price'] = data.view_price.astype('int')  # 转为整型

# 用 qcut 将price列分为12组
data['group'] = pd.qcut(data.price, 6)
df_group = data.group.value_counts().reset_index()  # 生成数据框并重设索引

print(df_group['group'].values.tolist())
print(list(map(str, df_group['index'].values.tolist())))